using System.ComponentModel.DataAnnotations.Schema;
using System.Data.Entity.ModelConfiguration;

//Importamos
using EventSys.BussinesEntities;

namespace EventSys.Repository.Mapping
{
    public class ActividadMap : EntityTypeConfiguration<Actividad>
    {
        public ActividadMap()
        {
            // Primary Key
            this.HasKey(t => t.idActividad);

            // Properties
            this.Property(t => t.NomActividad)
                .HasMaxLength(20);

            this.Property(t => t.Lugar)
                .HasMaxLength(20);

            this.Property(t => t.Direccion)
                .HasMaxLength(50);

            this.Property(t => t.Descripcion)
                .HasMaxLength(200);

            this.Property(t => t.DirigidoA)
                .HasMaxLength(50);

            // Table & Column Mappings
            this.ToTable("Actividad");
            this.Property(t => t.idActividad).HasColumnName("idActividad");
            this.Property(t => t.NomActividad).HasColumnName("NomActividad");
            this.Property(t => t.IdTipoActividad).HasColumnName("IdTipoActividad");
            this.Property(t => t.Fecha).HasColumnName("Fecha");
            this.Property(t => t.Hora).HasColumnName("Hora");
            this.Property(t => t.Duracion).HasColumnName("Duracion");
            this.Property(t => t.Capacidad).HasColumnName("Capacidad");
            this.Property(t => t.Lugar).HasColumnName("Lugar");
            this.Property(t => t.Direccion).HasColumnName("Direccion");
            this.Property(t => t.idAmbiente).HasColumnName("idAmbiente");
            this.Property(t => t.Descripcion).HasColumnName("Descripcion");
            this.Property(t => t.DirigidoA).HasColumnName("DirigidoA");
            this.Property(t => t.idEvento).HasColumnName("idEvento");

            // Relationships
            this.HasOptional(t => t.Ambiente)
                .WithMany(t => t.Actividads)
                .HasForeignKey(d => d.idAmbiente);
            this.HasOptional(t => t.Evento)
                .WithMany(t => t.Actividads)
                .HasForeignKey(d => d.idEvento);
            this.HasOptional(t => t.TipoActividad)
                .WithMany(t => t.Actividads)
                .HasForeignKey(d => d.IdTipoActividad);

        }
    }
}

